Technical Field
Embodiments described herein are related to the field of graphics-processing units (GPUs) in computer systems. More specifically, the present embodiments relate to techniques for predicting an incoming workload to a GPU and configuring the subsequent execution of the GPU based on the incoming workload.
Related Art
Power management is critically important for many electronic devices. For example, portable electronic devices such as laptop computers, mobile phones, and personal digital assistants (PDAs) need to conserve power to operate for any length of time on battery power. At the same time, many of these portable electronic devices are beginning to incorporate high-resolution, high-power graphics technology. Rapid developments in this area have led to significant advances in 2D and 3D graphics technology, providing users with increasingly sophisticated visual experiences in domains ranging from graphical user interfaces to realistic gaming environments. Underlying many of these improvements is the development of dedicated graphics-rendering devices, or graphics-processing units (GPUs). A typical GPU includes a highly parallel structure that efficiently manipulates graphical objects by rapidly performing a series of primitive operations and displaying the resulting images on graphical displays.
To enable efficient graphics processing while reducing power consumption, the operating level (e.g., operating voltage and/or frequency) of the GPU may be adjusted based on the workload of the GPU. For example, the workload of the GPU may be periodically and/or continuously sampled. If the sampled workload is high, the GPU's operating level may be increased, making the GPU faster but less efficient. Conversely, if the sampled workload is low, the GPU's operating level may be decreased, causing the GPU to execute more slowly but also more efficiently.
Such sampling-based power management may cause the GPU's operating level to be adjusted based on the GPU's past workload instead of the GPU's current workload. In turn, the delayed response to changes in the workload may reduce GPU performance and/or efficiency during the processing of rapidly and/or periodically fluctuating workloads. For example, sampling of the GPU's workload may take up to 100 milliseconds, while adjustment of the GPU's operating level may not be complete until several milliseconds after the GPU's workload has been sampled. As a result, the GPU's operating level may be out of sync with workloads that fluctuate every 100-200 milliseconds, with an increase in the operating level occurring as the workload decreases and a decrease in the operating level occurring as the workload increases.
Hence, what is needed is a mechanism for improving the synchronization of GPU operating levels with GPU workloads.